package com.Txunda.fxw.config;

import android.app.Application;
import android.text.TextUtils;

import com.Txunda.fxw.BuildConfig;
import com.Txunda.fxw.base.utils.tool.Toolkit;
import com.Txunda.fxw.base.utils.util.FileManager;
import com.Txunda.fxw.base.utils.util.ListUtils;
import com.Txunda.fxw.base.utils.util.PreferencesUtils;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * Application类初始化配置
 *
 * @author liul @date 2015年6月25日
 * @version 1.0
 */
public class WeApplication extends Application {

    private final String PREF_USERINFO = "user_info";

    // 用户信息
    private Map<String, String> userInfo;
    private static WeApplication application = null;

    public static WeApplication getInstance() {
        return application;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        application = this;
        // 初始化栈管理器
        start();
        // 初始化用户信息
        initUserInfo();
//        x.Ext.init(this);
//        x.Ext.setDebug(BuildConfig.DEBUG);
    }

    private void start() {
        // 获得屏幕宽度（像素）
        Settings.displayWidth = Toolkit.getScreenWidth(this);
        // 获得屏幕高度（像素）
        Settings.displayHeight = Toolkit.getScreenHeight(this);
        // 文件路径设置
        Settings.cacheCompressPath = FileManager.getCompressFilePath(); // 压缩存储路径
        // 创建路径
        new File(Settings.cacheCompressPath).mkdirs();
    }

    private void initUserInfo() {
        // 初始化变量防止在未登录情况下获取信息时出现空指针异常
        userInfo = new HashMap<String, String>();
        // 得到userinfo的所有key
        String keys = PreferencesUtils.getString(this, PREF_USERINFO);
        if (!TextUtils.isEmpty(keys)) {
            String[] userInfos = keys.split(ListUtils.DEFAULT_JOIN_SEPARATOR);
            for (String key : userInfos) {
                userInfo.put(key, PreferencesUtils.getString(this, key));
            }
        }

    }

    public Map<String, String> getUserInfo() {
        return userInfo;
    }

    /**
     * 设置用户信息
     */
    public void setUserInfo(Map<String, String> userInfo) {
        this.userInfo = userInfo;
        // 把用户信息存进Preferences
        List<String> keys = new ArrayList<>();
        for (String key : this.userInfo.keySet()) {
            keys.add(key);
            String value = this.userInfo.get(key);
            PreferencesUtils.putString(this, key, value);
        }
        PreferencesUtils.putString(this, PREF_USERINFO, ListUtils.join(keys));
    }

}
